Animated characters are used in a variety of applications, such as movies, cartoons, computer-based games, and computer-based simulations. Existing applications are available for creating two-dimensional (2D) and three-dimensional (3D) static character models. These existing programs include 3D Studio Max.TM. manufactured by Kinetix of San Francisco, Calif. and Adobe Photoshop.TM. manufactured by Adobe Systems Inc. of San Jose, Calif.
Existing systems are available to animate a character. These existing systems animate characters by requiring a sequence of key frames to be created (e.g., by animators or artists) and filling in the in-between frames automatically. Generally, this sequence of key frames is environment-specific. Thus, to generate similar character movement in a different environment, a separate sequence of key frames must be created and the in-between frames generated.
For linear applications of character animation (such as those in movies and television), where the environment and the character's movement within it can be predetermined, these sequential animation systems may be sufficient, although not necessarily efficient. The inefficiency is due to the low-level key frame animation that needs to be created by hand, particularly for complex interaction among a large number of characters and between each character and the environment.
For real-time interactive applications of character animation (such as those in computer games and other computer-based simulations) where the environment and the interaction of the characters with the environment may be changing dynamically, these sequential animation systems are not sufficient. Today, these sequential animation systems are being used to pre-generate animation sequences for character animation. During runtime, based on the situation and the desired motion of the character, the appropriate animation sequence is selected and executed to animate the character in the desired manner. By doing that, the interaction between the character and the environment is limited by the number of pre-generated movements available. Certain interactions between the character and the environment may appear unrealistic because a pre-generated movement does not exist for every possible situation and every possible interaction between the character and the environment. For example, a character may have a pre-generated movement that causes the character to grasp an object. Depending on the location of the object to be grasped, the character may need to reach for the object or bend down to pick up the object. Unless a particular sequence of frames has been generated for the required movement in the specific environment, then the motion of the character may appear unrealistic.
Additionally, the pre-generation of movements is time-consuming and expensive. Each pre-generated movement is associated with a particular character movement in a particular environment. Thus, as the number of potential movements increases or the number of potential environments increases, the number of pre-generated movements also increases. For example, if a particular character may grasp an object that can be positioned in twenty different locations, a pre-generated grasping motion may be required for each of the twenty locations.
Using existing systems, since a designer cannot provide a pre-generated movement for every possible character interaction in every possible environment the designer must limit the number of possible situations encountered by the character. This puts a severe limitation on content design.
The use of pre-generated movements by existing systems also requires a significant amount of bandwidth to transmit the pre-generated movements to the system implementing the character. A system requiring a high bandwidth may not be practical in certain network-based applications. In particular, systems requiring high-bandwidth communication links are not well-suited for Internet use. In bandwidth-limited environments, the use of pre-generated movements may not be permitted or may result in the irregular and unrealistic movement of the character.
It is therefore desirable to provide a character animation system that produces a realistic interaction between the character and its environment, even when the environment is changing dynamically, without requiring the generation of environment-specific motion sequences. It is also desirable to provide a character animation system that requires minimal bandwidth to implement the character animation in a network environment.